#include <iostream>
#include <cstring>
using namespace std;
using LL=long long;
const int M=100;

static LL c[M];
LL ret[M];
void add(LL a[],LL b[])
{
	LL t=0;
	memset(c,0,sizeof(c));
	
	for(int i=0;i<M;i++)
	{
		t+=a[i]+b[i];
		c[i]=t%10;
		t/=10;
	}
	memcpy(a,c,sizeof(c));
}
void mul(LL a[],LL b)
{
	LL t=0;
	memset(c,0,sizeof(c));
	for(int i=0;i<M;i++)
	{
		t+=a[i]*b;
		c[i]=t%10;
		t/=10;
	}
	memcpy(a,c,sizeof(c));
}
void Print()
{
	int k=M-1;
	while(k>=0 && ret[k]==0)
		k--;
	for(;k>=0;k--)
		printf("%lld",ret[k]);
	cout<<endl;
}
void cul(LL tmp[],int q)
{
	tmp[0]=1;
	for(int i=1;i<=q;i++)
	{
		mul(tmp,i);
	}
}
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		LL tmp[M];
		memset(tmp,0,sizeof(tmp));
		
		cul(tmp,i);
		add(ret,tmp);
	}
	Print();
	return 0;
}
